package paths

import (
	"fmt"
	"io"
	"os"
	"path"
)

func Join(p1 string, p2 string) string {
	return path.Join(p1, p2)
}

// 判断所给路径文件/文件夹是否存在
func Exists(path string) bool {
	_, err := os.Stat(path) //os.Stat获取文件信息
	if err != nil {
		if os.IsExist(err) {
			return true
		}
		return false
	}
	return true
}

// 判断所给路径是否为文件夹
func IsDir(path string) bool {
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()
}

// 判断所给路径是否为文件
func IsFile(path string) bool {
	return !IsDir(path)
}

func Mkdirs(path string) error {
	return os.MkdirAll(path, os.ModePerm)
}

func Create(path string) error {
	var _, err = os.Create(path)
	return err
}

func CopyFile(src, tar string) error {
	sourceFile, err := os.Stat(src)
	if err != nil {
		return err
	}
	if !sourceFile.Mode().IsRegular() {
		return fmt.Errorf("%s is not a regular file", src)
	} else if sourceFile.IsDir() {
		return fmt.Errorf("%s is dir", src)
	}
	source, err := os.Open(src)
	if err != nil {
		return err
	}
	defer source.Close()
	target, err := os.Create(tar)
	if err != nil {
		return err
	}
	defer target.Close()
	_, err = io.Copy(target, source)
	return err
}

